#pragma once

namespace Tmpl {

class VideoMode
{
public:
	VideoMode() : width(0), height(0), bitsPerPixel(0) {}
	VideoMode(int w, int h, int bpp) : width(w), height(h), bitsPerPixel(bpp) {}

	int width, height;
	int bitsPerPixel;

	bool IsValid() const;

	static int GetModeCount();
	static const VideoMode* GetModes();
	static VideoMode GetDesktopMode();
private:
	static void myReadModes();
	static VideoMode* myModes;
	static int myModeCount;
};

struct WinProperties
{
	bool active, minimized, fullscreen, resizeable, vsync;
	int w, h;
};

extern WinProperties WinGetProperties();
extern bool WinSetVsync(bool enable);
extern bool WinSetWindowSize(int width, int height);
extern bool WinSetFullscreen(bool fullscreen);
extern bool WinSetSizeAndFullscreen(bool fullscreen, int width, int height);

}; // namespace Tmpl

